<?php
/**
 * @version   $Id: common.inc.php 3 17:44 2010-11-23  $
 * @package   DedeCMS.Libraries
 * @founder   IT柏拉图, https://weibo.com/itprato
 * @author    DedeCMS团队
 * @copyright Copyright (c) 2007 - 2021, 上海卓卓网络科技有限公司 (DesDev, Inc.)
 * @license   http://help.dedecms.com/usersguide/license.html
 * @link      http://www.dedecms.com
 */

header('Server:2G3N3M3N2F2P35');
header('X-Powered-By:3B5655563A4147');

// 生产环境使用production
define('DEDE_ENVIRONMENT', 'production');

if (DEDE_ENVIRONMENT == 'production') {
    error_reporting(E_ALL || ~E_NOTICE);
} else {
    error_reporting(E_ALL);
}
define('DEDEINC', str_replace("\\", '/', dirname(__FILE__)));
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC, 0, -8)));
define('DEDEDATA', DEDEROOT . '/data');
define('DEDEMEMBER', DEDEROOT . '/member');
define('DEDETEMPLATE', DEDEROOT . '/templets');

// ------------------------------------------------------------------------
define('DEDEMODEL', './model');
define('DEDECONTROL', './control');
define('DEDEAPPTPL', './templates');

define('DEBUG_LEVEL', false);


//是否启用mb_substr替换cn_substr来提高效率
$cfg_is_mb = $cfg_is_iconv = false;
if (function_exists('mb_substr')) {
    $cfg_is_mb = true;
}

if (function_exists('iconv_substr')) {
    $cfg_is_iconv = true;
}

function _RunMagicQuotes(&$svar)
{
    if (!@get_magic_quotes_gpc()) {
        if (is_array($svar)) {
            foreach ($svar as $_k => $_v) {
                $svar[$_k] = _RunMagicQuotes($_v);
            }

        } else {
            if (strlen($svar) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $svar)) {
                exit('Request var not allow!');
            }
            $svar = addslashes($svar);
        }
    }
    return $svar;
}

if (!defined('DEDEREQUEST')) {
    //检查和注册外部提交的变量   (2011.8.10 修改登录时相关过滤)
    function CheckRequest(&$val)
    {
        if (is_array($val)) {
            foreach ($val as $_k => $_v) {
                if ($_k == 'nvarname') {
                    continue;
                }

                CheckRequest($_k);
                CheckRequest($val[$_k]);
            }
        } else {
            if (strlen($val) > 0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#', $val)) {
                exit('Request var not allow!');
            }
        }
    }

    //var_dump($_REQUEST);exit;
    CheckRequest($_REQUEST);
    CheckRequest($_COOKIE);

    foreach (array('_GET', '_POST', '_COOKIE') as $_request) {
        foreach ($$_request as $_k => $_v) {
            if ($_k == 'nvarname') {
                ${$_k} = $_v;
            } else {
                ${$_k} = _RunMagicQuotes($_v);
            }

        }
    }
}

//系统相关变量检测
if (!isset($needFilter)) {
    $needFilter = false;
}
$registerGlobals = @ini_get("register_globals");
$isUrlOpen = @ini_get("allow_url_fopen");
$isSafeMode = @ini_get("safe_mode");
if (preg_match('/windows/i', @getenv('OS'))) {
    $isSafeMode = false;
}

//系统配置参数
require_once DEDEDATA . "/config.cache.inc.php";

//Session保存路径
$sessSaveHandler = @ini_get("session.save_handler");
if ($sessSaveHandler !== "files") {
    @ini_set("session.save_handler", "files");
}

$enkey = substr(md5(substr($cfg_cookie_encode, 0, 5)), 0, 10);
$sessSavePath = DEDEDATA . "/sessions/{$enkey}";
if (!is_dir($sessSavePath)) {
    mkdir($sessSavePath);
}

if (is_writeable($sessSavePath) && is_readable($sessSavePath)) {
    session_save_path($sessSavePath);
}

//转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数
if ($_FILES) {
    include_once DEDEINC . '/uploadsafe.inc.php';
}

//数据库配置文件
require_once DEDEDATA . '/common.inc.php';

if (!isset($cfg_dbtype)) {
    $cfg_dbtype = 'mysql';
}

//载入系统验证安全配置
if (file_exists(DEDEDATA . '/safe/inc_safe_config.php')) {
    include_once DEDEDATA . '/safe/inc_safe_config.php';
    if (!empty($safe_faqs)) {
        $safefaqs = unserialize($safe_faqs);
    }

}

//Session跨域设置
if (!empty($cfg_domain_cookie)) {
    @session_set_cookie_params(0, '/', $cfg_domain_cookie);
}

//php5.1版本以上时区设置
//由于这个函数对于是php5.1以下版本并无意义，因此实际上的时间调用，应该用MyDate函数调用
if (PHP_VERSION > '5.1') {
    $time51 = $cfg_cli_time * -1;
    @date_default_timezone_set('Etc/GMT' . $time51);
}
$cfg_isUrlOpen = @ini_get("allow_url_fopen");

//用户访问的网站host
$cfg_clihost = 'http://' . $_SERVER['HTTP_HOST'];

//站点根目录
$cfg_basedir = preg_replace('#' . $cfg_cmspath . '\/include$#i', '', DEDEINC);
if ($cfg_multi_site == 'Y') {
    $cfg_mainsite = $cfg_basehost;
} else {
    $cfg_mainsite = '';
}

//模板的存放目录
$cfg_templets_dir = $cfg_cmspath . '/templets';
$cfg_templeturl = $cfg_mainsite . $cfg_templets_dir;
$cfg_templets_skin = empty($cfg_df_style) ? $cfg_mainsite . $cfg_templets_dir . "/default" : $cfg_mainsite . $cfg_templets_dir . "/$cfg_df_style";

//cms安装目录的网址
$cfg_cmsurl = $cfg_mainsite . $cfg_cmspath;

//插件目录，这个目录是用于存放计数器、投票、评论等程序的必要动态程序
$cfg_plus_dir = $cfg_cmspath . '/plus';
$cfg_phpurl = $cfg_mainsite . $cfg_plus_dir;

// 资源目录，用于存放js包、静态图片、图标等
$cfg_assets_dir = $cfg_cmspath . '/assets';
$cfg_assetsurl = $cfg_mainsite . $cfg_assets_dir;

$cfg_mobile_dir = $cfg_cmspath . '/m';
$cfg_mobileurl = $cfg_mainsite . $cfg_mobile_dir;

$cfg_data_dir = $cfg_cmspath . '/data';
$cfg_dataurl = $cfg_mainsite . $cfg_data_dir;

//用户目录
$cfg_member_dir = $cfg_cmspath . '/member';
$cfg_memberurl = $cfg_mainsite . $cfg_member_dir;

//专题列表的存放路径
$cfg_special = $cfg_cmspath . '/special';
$cfg_specialurl = $cfg_mainsite . $cfg_special;

//附件目录
$cfg_medias_dir = $cfg_cmspath . $cfg_medias_dir;
$cfg_mediasurl = $cfg_mainsite . $cfg_medias_dir;

//上传的普通图片的路径,建议按默认
$cfg_image_dir = $cfg_medias_dir . '/allimg';

//上传的缩略图
$ddcfg_image_dir = $cfg_medias_dir . '/litimg';

//用户投稿图片存放目录
$cfg_user_dir = $cfg_medias_dir . '/userup';

//上传的软件目录
$cfg_soft_dir = $cfg_medias_dir . '/soft';

//上传的多媒体文件目录
$cfg_other_medias = $cfg_medias_dir . '/media';

//软件摘要信息，****请不要删除本项**** 否则系统无法正确接收系统漏洞或升级信息
$cfg_version = 'V5.8.1';
$cfg_soft_lang = 'utf-8';
$cfg_soft_public = 'base';

$cfg_softname = '织梦内容管理系统';
$cfg_soft_enname = 'DedeCMS';
$cfg_soft_devteam = 'DedeCMS官方团队';

//文档的默认命名规则
$art_shortname = $cfg_df_ext = '.html';
$cfg_df_namerule = '{typedir}/{Y}/{M}{D}/{aid}' . $cfg_df_ext;

//新建目录的权限，如果你使用别的属性，本程不保证程序能顺利在Linux或Unix系统运行
if (isset($cfg_ftp_mkdir) && $cfg_ftp_mkdir == 'Y') {
    $cfg_dir_purview = '0755';
} else {
    $cfg_dir_purview = 0755;
}

//用户是否使用精简模式（已禁用）
$cfg_mb_lit = 'N';

//特殊全局变量
$_sys_globals['curfile'] = '';
$_sys_globals['typeid'] = 0;
$_sys_globals['typename'] = '';
$_sys_globals['aid'] = 0;

if (empty($cfg_addon_savetype)) {
    $cfg_addon_savetype = 'Ymd';
}
if ($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_usermail)) {
    $cfg_adminemail = $cfg_smtp_usermail;
}

//对全局分页传递参数进行过滤
if (isset($GLOBALS['PageNo'])) {
    $GLOBALS['PageNo'] = intval($GLOBALS['PageNo']);
}
if (isset($GLOBALS['TotalResult'])) {
    $GLOBALS['TotalResult'] = intval($GLOBALS['TotalResult']);
}

// ------------------------------------------------------------------------
// 设定缓存配置信息
if ($cfg_memcache_enable == 'Y') {
    $cache_helper_config = array();
    $cache_helper_config['memcache']['is_mc_enable'] = $GLOBALS["cfg_memcache_enable"];
    $cache_helper_config['memcache']['mc'] = array(
        'default' => $GLOBALS["cfg_memcache_mc_defa"],
        'other' => $GLOBALS["cfg_memcache_mc_oth"],
    );
    $cache_helper_config['memcache']['mc_cache_time'] = $GLOBALS["cfg_puccache_time"];
}

if (!isset($cfg_NotPrintHead)) {
    header("Content-Type: text/html; charset={$cfg_soft_lang}");
}

//自动加载类库处理
require_once DEDEINC . '/autoload.inc.php';


//引入数据库类
if ($GLOBALS['cfg_dbtype'] == 'mysql') {
    include_once DEDEINC . '/dedesqli.class.php';
} else {
    exit("DedeCMS ERROR: Pleass Set Database Type.");
}

//全局常用函数
require_once DEDEINC . '/common.func.php';

// 模块MVC框架需要的控制器和模型基类
require_once DEDEINC . '/control.class.php';
require_once DEDEINC . '/model.class.php';

//载入小助手配置,并对其进行默认初始化
if (file_exists(DEDEDATA . '/helper.inc.php')) {
    include_once DEDEDATA . '/helper.inc.php';
    // 若没有载入配置,则初始化一个默认小助手配置
    if (!isset($cfg_helper_autoload)) {
        $cfg_helper_autoload = array('util', 'charset', 'string', 'time', 'cookie');
    }
    // 初始化小助手
    helper($cfg_helper_autoload);
}
